【RNG vs SKT】弹幕的自然语言的初步分析
作者:小歪
个人公众号:萌新的学习日记
前排 @皇族电子竞技俱乐部
==================================
S7中RNG对阵SKT,想必是全世界LOL玩家关注的重点。在比赛开始前,使用小葫芦把斗鱼S7直播间的弹幕都抓下来,想着做一小点分析,看看会得出什么结论。
因为数据量和分析深度等原因,以下内容仅供娱乐观赏
1、数据采集
使用小葫芦采集2万多条弹幕数据,RNG对阵SKT斗鱼直播间的弹幕,最后得到约4万可用数据
2、中文分词
使用jieba分词,算法如下
基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG)
采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合
对于未登录词,采用了基于汉字成词能力的 HMM 模型,使用了 Viterbi 算法
简单处理之后,看起来是这样
顺便做个统计,看看都在说什么。不加停用词是这样的,全是 “666”
RNG和牛逼是出现最多的词语,同时也发现“卢本伟牛逼”
弱弱问一句“唐梦琼”是谁
下面是词云,Python的词云做不来不好看,所以我使用的工具 HTML5 Word Cloud
弹幕内容词云
用户昵称词云
3、情感分析
这里使用的是 isnowfy/snownlp。SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的。
from snownlp import SnowNLP s = SnowNLP(u'这个东西真心很赞')
s.sentiments # 0.9769663402895832 positive的概率
有点难看,直接看数据吧,得到的结果是在 [0,1] 之间的positive的概率。
51659中有44705个大于0.5,占比86.54%,有 6954条弹幕低于0.5,占比13.46%。
弹幕中积极的概率还是相当高的,说明观众还是比较赞赏比赛的。
4、特征提取
TF-IDF是信息检索领域非常重要的搜索词重要性度量;tf-idf是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。
词频TF(Term Frequency)
词w在文档d中出现次数count(w, d)和文档d中总词数size(d)的比值:
基于 TF-IDF 算法的关键词抽取:
RNG
rng
贺电
加油
发来
666
6666
66666
恭喜
66666666666666
666666
66666666666
6666666
skt
李哥
66666666666666666666
SKT
66666666
666666666
马甲
在没有加上停用词的前提下,可以看到效果并不理想
TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。
基于 TextRank 算法的关键词抽取:
发来
贺电
加油
学院
机器人
大学
职业
船长
技术
小炮
没有
解说
中国
经济
开始
无敌
香锅
垃圾
老鼠
科技
5、特征选择
Word2vec是一个将单词表征成向量的形式,它可以把文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。
计算相似度:
首先是RNG:
rng 0.9893965721130371
加油 0.9829007983207703
必胜 0.9790929555892944
Rng 0.9743078947067261
恭喜 0.9733642339706421
中国队 0.9397183656692505
关 0.9283092021942139
< 0.9278833866119385
燕尾港 0.9222617149353027
B 0.9143030643463135
RNG加油
看看SKT:
skt 0.9911665320396423
皇族 0.972029983997345
^ 0.970970094203949
稳住 0.9653508067131042
干死 0.9643667340278625
牛比 0.9629441499710083
一起 0.9625348448753357
@ 0.9619969725608826
鸟巢 0.9608791470527649
冠军 0.9608250856399536
稳住,干死SKT?
贺电:
学院 0.9811943769454956
大学 0.980491042137146
技术 0.9766334295272827
职业 0.9691535234451294
电子科技 0.9668481349945068
发来 0.9619022607803345
科技 0.9594647884368896
山东 0.9568137526512146
重庆 0.9440888166427612
哈尔滨 0.939836859703064
山东XX学院发来贺电
加油:
必胜 0.9876022934913635
RNG 0.9829007983207703
rng 0.960281252861023
Rng 0.9591789841651917
恭喜 0.9551880359649658
中国队 0.9436988830566406
关 0.94183349609375
! 0.921385645866394
~ 0.9148629903793335
@ 0.9062787294387817
RNG加油,RNG必胜
小狗:
吹 0.9970275163650513
无敌 0.996719241142273
神超 0.996111273765564
后期 0.9959050416946411
厉害 0.9957337975502014
凶 0.9957261681556702
强 0.9955072402954102
一个 0.9954395890235901
干 0.99541175365448
起来 0.9952359199523926
狗吹?
李哥:
还是 0.9825356602668762
电话 0.9700809717178345
承 0.9697628617286682
心脏 0.9686012864112854
陈文泽在 0.9681863188743591
麻痹 0.9680625200271606
响 0.9674116373062134
以为 0.9664229154586792
狗哥 0.9592204689979553
不 0.9589840769767761
你李哥还是你李哥
MLXG:
宣告 0.9958090782165527
mlxg 0.9953181147575378
死亡 0.995277464389801
b 0.9949076771736145
6666 0.9947425723075867
丑 0.9943945407867432
10 0.9943088293075562
辣鸡 0.9940722584724426
干死 0.9940391778945923
锤 0.9939616918563843
香锅和死亡宣告有啥关系
小虎:
笑笑 0.9971799850463867
看到 0.9967395663261414
解说 0.9961692690849304
不是 0.9959656000137329
中单 0.9951503872871399
假 0.9950063824653625
为什么 0.9944812655448914
又 0.9942663908004761
么 0.9938984513282776
里奥 0.9937981367111206
小虎与加里奥(:
letme:
难受 0.9964221715927124
笑话 0.9959778785705566
哦 0.9958946108818054
世界 0.9958213567733765
毒奶 0.9957934021949768
KPL 0.9957884550094604
上单 0.9956253170967102
瓜皮 0.9955945014953613
快 0.9953423738479614
打团 0.9953156113624573
真难受啊
待做的事情
可以使用朴素贝叶斯做分类模型
使用机器学习性能评估指标预测精确率和准确率
欢迎补充
可参考资料
1)中文分词基本算法介绍
2)ICTCLAS 汉语词性标注集
3)文本分类技术
4)文本分类与SVM
5)基于贝叶斯算法的文本分类算法
6)基于libsvm的中文文本分类原型
7)LDA-math-文本建模
8)情感分析资源
9)面向情感分析的特征抽取技术研究
9.1)斯坦福大学自然语言处理第七课-情感分析
10)深度学习、自然语言处理和表征方法
11)Deep Learning in NLP (一)词向量和语言模型
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
0.小编的Python入门视频课程!!!
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。